package database;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import stundenplan.Unterrichtstag;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;

public class StundenplanDatabaseService {

	private SQLiteDatabase db;
	
	public StundenplanDatabaseService(SQLiteDatabase db) {
		this.db = db;
	}
	
	public List<Unterrichtstag> getUnterrichtstage() {
		
		List<Unterrichtstag> unterrichtstage = new ArrayList<Unterrichtstag>();			
		Cursor cursor = db.query(IStundenplanTable.NAME, null, null, null, null, null, null);		
		
		while(cursor.moveToNext())
		{
			Unterrichtstag tag = new Unterrichtstag();
			Long datum = cursor.getLong(cursor.getColumnIndex(IStundenplanTable.DATUM));	
			tag.setDatum(new Date(datum));
			tag.setStunden(getStundenForDate(datum));			
			unterrichtstage.add(tag);
		}
		return unterrichtstage;
	}
	
	private ArrayList<String> getStundenForDate(Long datum) {

		ArrayList<String> stunden = new ArrayList<String>();
		String whereClause = String.format("%s = %s", IStundenplanTable.DATUM, datum);
		Cursor cursor = db.query(IStundenplanTable.NAME, null, whereClause, null, null, null, null);
		
		while (cursor.moveToNext()) {
			stunden.add(cursor.getString(cursor.getColumnIndex(IStundenplanTable.FACH)));
		}
		
		return stunden;
	}

	public void insertUnterrichtstage(List<Unterrichtstag> unterrichtstage) {
		
		db.delete(IStundenplanTable.NAME, null, null);
		
		for (Unterrichtstag item : unterrichtstage) {
			for (String fach : item.getStunden()) {
				
				ContentValues values = new ContentValues();		
				values.put(IStundenplanTable.DATUM, item.getDatum().getTime());
				values.put(IStundenplanTable.FACH, fach);			
				db.insert(IStundenplanTable.NAME, null, values);
			}
		}	
	}
	
	public void close() {
		db.close();
	}
}
